package gouzao;

 /*class Test2 {
    Test2(){
        System.out.println("小狗");
    }
 }
    public class Test3 extends Test2{
        public static void main(String[] args) {
            new Test3();
           //1. 创建子类对象时必须会先调用父类的构造方法只要使用new关键字创建某个类的实例，就一定会调用该类的构造方法.
            new Test2();
        }
    }
*/



//2.父类有参构造方法时的处理:子类构造方法必须通过 super 关键字调用父类的有参构造方法，且 super 调用语句必须是子类构造方法的第一条语句。
/*class Test2{
    public Test2(String name){
        System.out.println("父类构造方法有参时"+name);
    }
}
public class Test3 extends Test2 {
    public Test3(){
        super("w");//调用父类 Test2 的构造方法将参数w传给Test2形参，对父类进行初始化。

        System.out.println("子类构造方法");
    }

    public static void main(String[] args) {
        new Test3();
    }
}*/



//3.父类无参构造方法时的处理

 class Test2{
     public Test2(){
         System.out.println("父类构造方法无参时");
     }
 }
public class Test3 extends Test2 {
    public Test3(){
        //super();会默认在子类构造方法的第一行插入super对父类无参构造方法的调用

        System.out.println("子类构造方法");
    }

    public static void main(String[] args) {
        new Test3();
    }
}